const Sequelize = require('sequelize');
const sequelize = require('./newDb.js')


class User extends Sequelize.Model { }
User.init({
    username:{type:Sequelize.STRING(10),allowNull: false,unique: true},
    password:{type:Sequelize.STRING(32),allowNull: false},
    nickname: {type: Sequelize.STRING(10),unique: true},
    status:{ type: Sequelize.TINYINT, defaultValue: 0, comment: '是否被封禁,禁止登陆'},
    head: Sequelize.STRING,
    birthday: Sequelize.DATE,
    qualification: { type: Sequelize.STRING ,comment:'用户权限,采用权限逐个分配制,用逗号分隔,需要时转成数组'}
}, {
        sequelize,
        freezeTableName: false, // 如果为 true 则表的名称和 model 相同，即 user,为 false MySQL创建的表名称会是复数 users,如果指定的表名称本就是复数形式则不变
        //modelName: 'uwuoer',//指定数据库表的名字,优先级最高,超越freezeTableName的优先级
        timestamps: true //是否自动添加时间戳createAt,updateAt
    });

//独立一张表单:region----选框:A股,美股----market_region
//股票名字+股票代号
//涨跌幅的百分比,具体数值
//开始时间-结束时间
//背景
//结果
//文章创建时间//Sequelize自动添加
//投稿者名字
//独立一张表:关键信息:相当于标签,如 特朗普 加税 空客坠机
class Post extends Sequelize.Model { }
Post.init({
    market_region:{ type: Sequelize.TINYINT.UNSIGNED, allowNull: false, defaultValue: 1},
    stk_name: {type:Sequelize.STRING(12),allowNull: false},
    stk_code: Sequelize.STRING(12),
    range_per: Sequelize.FLOAT(5, 2),
    range_val: Sequelize.FLOAT(7, 2),
    time_begin: Sequelize.DATE,
    time_end: Sequelize.DATE,
    event_cause:Sequelize.STRING(200),
    event_result: Sequelize.STRING(200),
    tag: Sequelize.STRING(),
    nickname: Sequelize.STRING(10),
    likeit: {type:Sequelize.INTEGER,defaultValue:0}
}, {
        sequelize,
        freezeTableName: false, // 如果为 true 则表的名称和 model 相同，即 user,为 false MySQL创建的表名称会是复数 users,如果指定的表名称本就是复数形式则不变
        timestamps: true //是否自动添加时间戳createAt,updateAt
    });

class MarketRegion extends Sequelize.Model { }
MarketRegion.init({
    name: { type:Sequelize.STRING(6),allowNull: false,unique: true}
}, {
        sequelize,
        freezeTableName: false, // 如果为 true 则表的名称和 model 相同，即 user,为 false MySQL创建的表名称会是复数 users,如果指定的表名称本就是复数形式则不变
        timestamps: false //是否自动添加时间戳createAt,updateAt
    })



    class Tag extends Sequelize.Model { }
    Tag.init({
        name: { type:Sequelize.STRING(10),allowNull: false,unique: true}
    }, {
            sequelize,
            freezeTableName: false, // 如果为 true 则表的名称和 model 相同，即 user,为 false MySQL创建的表名称会是复数 users,如果指定的表名称本就是复数形式则不变
            timestamps: false //是否自动添加时间戳createAt,updateAt
    });
        

    class Qualification extends Sequelize.Model { }
    Qualification.init({
    name: { type:Sequelize.STRING(10),allowNull: false}
}, {
        sequelize,
        freezeTableName: false, // 如果为 true 则表的名称和 model 相同，即 user,为 false MySQL创建的表名称会是复数 users,如果指定的表名称本就是复数形式则不变
            timestamps: false, //是否自动添加时间戳createAt,updateAt
            //需要创建多个unique键时,需要用如下indexes套路
            indexes: [
                {
                    unique: true,
                    fields: ['name']
                }
            ]
    });


    User.hasMany(Post); // 将userId添加到Task模型
    
    Post.belongsTo(User); // 同样会将userId添加到Task模型中


if (false) {
    sequelize.sync({ force: false, alter: true })
} else { 
    sequelize.sync({ force: false, alter: false })
}




module.exports = {
    User, Post, Tag,MarketRegion,Qualification
}
    // .then(() => User.create({
    //     username: 'janedoe',
    //     birthday: new Date(1980, 6, 20)
    // }))
    // .then(jane => {
    //     console.log(jane.toJSON());
    // });
